home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / source / term43-source.lha / Extras / Source / gtlayout-Source.lha / LT_LevelWidth.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-10-21  |  1.5 KB  |  88 lines

  1. /*  GadTools layout toolkit
  2. **
  3. **  Copyright © 1993-1994 by Olaf `Olsen' Barthel
  4. **  Freely distributable.
  5. */
  6.  
  7. #include "gtlayout_global.h"
  8.  
  9. STATIC LONG __stdargs
  10. DefaultDispFunc(struct Gadget *gad,WORD value)
  11. {
  12.     return(value);
  13. }
  14.  
  15.  
  16. VOID LIBENT
  17. LT_LevelWidth(REG(a0) LayoutHandle *handle,REG(a1) STRPTR levelFormat,REG(a2) DISPFUNC dispFunc,REG(d0) LONG min,REG(d1) LONG max,REG(a3) LONG *maxWidth,REG(a5) LONG *maxLen,REG(d2) BOOL fullCheck)
  18. {
  19.     UBYTE    buffer[80];
  20.     LONG    localMaxWidth;
  21.     LONG    localMaxLen;
  22.     LONG    len;
  23.  
  24.     localMaxWidth    = 0;
  25.     localMaxLen    = 0;
  26.  
  27.     if(handle)
  28.     {
  29.         if(!dispFunc)
  30.             dispFunc = DefaultDispFunc;
  31.  
  32.         if(!levelFormat)
  33.             levelFormat = "%ld";
  34.  
  35.         if(fullCheck)
  36.         {
  37.             LONG i;
  38.  
  39.             for(i = min ; i <= max ; i++)
  40.             {
  41.                 sprintf(buffer,levelFormat,(*dispFunc)(NULL,i));
  42.  
  43.                 len = strlen(buffer);
  44.  
  45.                 if(len > localMaxLen)
  46.                     localMaxLen = len;
  47.  
  48.                 len = TextLength(&handle -> RPort,buffer,len);
  49.  
  50.                 if(len > localMaxWidth)
  51.                     localMaxWidth = len;
  52.             }
  53.         }
  54.         else
  55.         {
  56.             sprintf(buffer,levelFormat,(*dispFunc)(NULL,min));
  57.  
  58.             len = strlen(buffer);
  59.  
  60.             if(len > localMaxLen)
  61.                 localMaxLen = len;
  62.  
  63.             len = TextLength(&handle -> RPort,buffer,len);
  64.  
  65.             if(len > localMaxWidth)
  66.                 localMaxWidth = len;
  67.  
  68.             sprintf(buffer,levelFormat,(*dispFunc)(NULL,max));
  69.  
  70.             len = strlen(buffer);
  71.  
  72.             if(len > localMaxLen)
  73.                 localMaxLen = len;
  74.  
  75.             len = TextLength(&handle -> RPort,buffer,len);
  76.  
  77.             if(len > localMaxWidth)
  78.                 localMaxWidth = len;
  79.         }
  80.     }
  81.  
  82.     if(maxLen)
  83.         *maxLen = localMaxLen;
  84.  
  85.     if(maxWidth)
  86.         *maxWidth = localMaxWidth + handle -> GlyphWidth;
  87. }
  88.